<?php 
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Класс отображения
 * @author bikmullin
 * @version 1.0
 */
class face
{
    /**
     * show_messages 
     * функция, отображающая тело гостевой книги
     * @param obj $engine объект доступа к базе данных
     */
    function show_messages($engine, $return = false)
    {
        //инциализируем строку вывода
        $out = "";
        //берем из базы сообщения
        $messages = $engine->get_messages();
        //если массив с сообщениями не пустой
        if(!empty($messages)) {
            //перебираем его
            foreach($messages as $message) {
            	$date = date("d-m-Y H:i:s", $message->message_date); 
                //записываем в строку $out готовый html код содержащий комментарии к сообщению
                $out .=  "<div class = 'guestbook' style='margin-left:35%;'>
                			<p>Date:{$date}</p>
                			<p>Message:<br />
                			<textarea cols='45' rows='5' readonly='readonly' style='resize:none;'>{$message->text}
                			</textarea></p>";
				$out .= $this->show_control_buttons($message->id, "messagesbuttons");
                //вызов функции для вывода комментариев к текущему сообщению             //  
                $out .= $this->show_comments($engine, $message->id);
                $out .= "</div>";
            }
        } 
		if($return){
			return $out;
		} else {
			 //вывод тела гостевой книги
        	echo stripslashes($out);
		}
    }
    /**
     * show_comments
     * Функция, отображающая комментарии к определенному сообщению
     * @param obj $engine объект доступа к базе данных
     * @param int $id идентификатор сообщения
     * @return string строка с html кодом комментариев
     */
    function show_comments($engine, $id, $buttons = "commentsbuttons")
    {
        //инициализируем строку вывода
        $out = "";
        //берем комментарии из базы данных
        $comments = $engine->get_comments($id);
        //если массив с комментариями не пустой
        if($comments != false )	{
           //перебираем его
           foreach($comments as $comment) {
               $date = date("d-m-Y H:i:s", $comment->comment_date);
        	   //записывает в строку $out готовый html код содержащий комментарии к сообщению
        	   $out .=  "<div class = comment style='margin-left:10%;'>
        	                 <p>Date:{$date}</p>
        	                 <p>Message:<br />
        	                 <textarea cols='45' rows='5' readonly='readonly' style='resize:none;'>{$comment->text}
        	                 </textarea></p>";
			   $out .= $this->show_control_buttons($comment->id, $buttons);
     	       $out .= " </div>";
           } 
           //возвращаем строку с html кодом
           return $out;
        } 
       //если массив с комментариями пуст, вернуть ложь
        else return false;
    }
    /**
     * show_message_with_comments
     * Функция для вывода одного сообщения с комментариями к нему
     * @param obj $engine объект доступа к базе данных
     * @param int $id идентификатор сообщения
     */
    function show_message_with_comments($engine, $id)
    {
        //берем сообщение из базы и помещаем в ассоциативный массив
        $message = $engine->get_message("messages", $id);
		$date = date("F j, Y, g:i a", $message->actual_date); 
        //запись в строку вывода сообщения
        $out = "<div class='guestbook'>
        		    <p>Date:{$date}</p>
          			<p>Message:<br /><textarea cols='45' rows='5' readonly='readonly'>{$message->text}
          				</textarea></p>";
        //дозапись в строку вывода комментариев
        $out .= $this->show_comments($engine, $id, "nobuttons");
		$out .= "</div>";
        //вывод на страницу
        echo $out;
    }
	/**
	 * show_control_buttons
	 * функция отображения кнопок под сообщенями гостевой
	 * @param int id 
	 * @param string buttons нужные кнопки
	 */
    function show_control_buttons($id, $buttons)
	{
	    global $CFG;
	    //инициализация строки
		$out = "";
		$path = $CFG->wwwroot."/blocks/guestbook/handler?";
		//если messagesbutton - 3 кнопки: редактировать, удалить, комментитровать
		//если commentsbuttons - 2 кнопки: редактировать, удалить
		//если nobuttons - без кнопок
		switch($buttons)
		{
			case "messagesbuttons":
			
				$edit = "action=edit&tbl_name=messages&id={$id}";
				$comment = "action=comment&tbl_name=messages&id={$id}";
				$delete = "action=delete&tbl_name=messages&id={$id}";
				
				$out .= "<a href='".$path.$edit."'>".get_string('edit', 'block_guestbook')."</a>
                		 <a href='".$path.$delete."'>".get_string('delete', 'block_guestbook')."</a>
                		 <a href='".$path.$comment."'>".get_string('comment', 'block_guestbook')."</a>"; 
				return $out;
			break;
			case "commentsbuttons": 
				$edit = "action=edit&tbl_name=comments&id={$id}";
				$delete = "action=delete&tbl_name=comments&id={$id}";
				
				$out .= "<a href='".$path.$edit."'>".get_string('edit', 'block_guestbook')."</a>
                		 <a href='".$path.$delete."'>".get_string('delete', 'block_guestbook')."</a>";
				return $out;
			break;
			case "nobuttons":return $out;
			break;
			default:return $out;
			break;
		}
	}
}
?>